/* ================================================================================
//	Crypteviant!
//	Providing tough encrypted P2P Chat
//	Copyright (C) 2010  Martin Pfeifer, Tobias Rausch
//
//	This program is free software: you can redistribute it and/or modify
//	it under the terms of the GNU General Public License as published by
//	the Free Software Foundation, either version 3 of the License, or
//	(at your option) any later version.
//
//	This program is distributed in the hope that it will be useful,
//	but WITHOUT ANY WARRANTY; without even the implied warranty of
//	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//	GNU General Public License for more details.
//
//	You should have received a copy of the GNU General Public License
//	along with this program.  If not, see <http://www.gnu.org/licenses/>.
// ============================================================================== */

#include "abstracttimer.hpp"


// Namespaces
using namespace Timer;

AbstractTimer::AbstractTimer(QObject *parent) :
    QObject(parent),
    m_startTime(0UL),
    m_stopTime(0UL),
    m_state(AbstractTimer::INITIAL)
{
}


unsigned long AbstractTimer::getStartTime() const
{
    return m_startTime;
}


unsigned long AbstractTimer::getStopTime() const
{
    return m_stopTime;
}


unsigned long AbstractTimer::getDifference() const
{
    if (m_state != AbstractTimer::STOPPED)
    {
	return 0UL;
    }

    if (m_stopTime > m_startTime)
    {
	return m_stopTime - m_startTime;
    } else {
	return m_startTime - m_stopTime;
    }
}


AbstractTimer::TimerState AbstractTimer::getState() const
{
    return m_state;
}


void AbstractTimer::setState(AbstractTimer::TimerState state)
{
    m_state = state;
}


void AbstractTimer::reset()
{
    m_startTime = 0UL;
    m_stopTime = 0UL;
    m_state = AbstractTimer::NONE;
}
